Interpreter framework for a computer file

ABSTRACT

A method for an interpreter framework is described. The method includes an interpreter module of a computing system receiving a first data file that includes multiple data sections. The interpreter module identifies each of the data sections of the first data file. Each data section includes data representing a real-world entity. For each respective data section of the first data file, the interpreter module parses information about the real-world entity represented by the data included in the data section. The interpreter module generates a second data file based on the parsed information for each of the data sections. The second data file includes encoded data for rendering a digital geographic structure using information about the real-world entity.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation and claims priority to U.S.application Ser. No. 17/008,029 filed on Aug. 31, 2020 and entitled“INTERPRETER FRAMEWORK FOR A COMPUTER FILE,” which is a continuation ofU.S. application Ser. No. 16/166,885 filed on Oct. 22, 2018 and entitled“INTERPRETER FRAMEWORK FOR A COMPUTER FILE,” which claims the benefit ofU.S. Provisional Application 62/614,857 filed on Jan. 8, 2018 andentitled “INTERPRETER FRAMEWORK FOR A COMPUTER FILE” and claims thebenefit of U.S. Provisional Application 62/614,870 filed on Jan. 8, 2018and entitled “SPACE PROFILE INTERPRETER FRAMEWORK FOR A COMPUTER FILE,”the disclosures of which are incorporated by reference herein in theirentirety.

This application is related to U.S. Patent Application No. 62/614,870,entitled “SPACE PROFILE INTERPRETER FRAMEWORK FOR A COMPUTER FILE,”filed on Jan. 8, 2018, and Attorney Docket Number 45263-0010P01. Theentire disclosure of U.S. Patent Application No. 62/614,870 is expresslyincorporated by reference herein in its entirety.

BACKGROUND

This application relates to computing processes for convertingelectronic files.

DXF files are generated by a computer-aided design (CAD) program (e.g.,commercial CAD programs or drafting software applications) and encodedata representations of real-world constructs. For example, the datarepresentations can be two dimensional floorplans for a building, wherethe floorplans include different outlines for each room of a floor. Datarepresentations of real-world constructs in separate DXF files can beencoded and arranged differently based on preferences and design choicesused in the CAD program. Because data representations can be encoded inDXF files in a variety of ways, interpreting DXF files can bechallenging.

SUMMARY

A DXF drawing file can be converted to a GeoJSON file by parsing andextracting data from sections of the DXF drawing file. The extracteddata is converted to GeoJSON format and aggregated to create a GeoJSONfile for viewing and modifying representations of real-world constructs.A computer application can interpret DXF files irrespective of thedifferent ways in which data defining the representations is arrangedwithin the files. For example, the computer application incorporates astandard method for identifying certain sections of the DXF files,extracting relevant information from the sections, converting theextracted information, and aggregating or rendering the information toproduce the GeoJSON file.

One aspect of the subject matter described in this specification can beembodied in a computer-implemented method. The method includes,receiving, at an interpreter module of a computing system, a firstelectronic data file comprising multiple respective data sections;identifying, by the interpreter module, each of the respective datasections of the first electronic data file, each data section comprisingdata representing a real-world entity of the first electronic data file.For each of the respective data sections, the method includes, parsing,by the interpreter module, information about the real-world entityrepresented by the data included in the data section. The method furtherincludes, generating, by the interpreter module and based on each of therespective data sections, a second electronic data file comprisingencoded data for rendering at least one digital geographic structureusing information about the real-world entity represented by the dataincluded in the data section.

These and other implementations can each optionally include one or moreof the following features. For example, in some implementations, parsingthe information about the real-world entity includes: extractingdimensional coordinates for the real-world entity, the dimensionalcoordinates defining characteristics of the real-world entity; and inresponse to extracting, digitally rendering the at least one geographicstructure using the dimensional coordinates.

In some implementations, generating the second electronic data fileincludes: converting, to a geospatial data format, the extracteddimensional coordinates for the real-world entity, wherein thegeospatial data format includes at least one dataset comprising geometryor physical attribute information about the real-world entity;translating the digital geographic structure by aggregating theconverted dimensional coordinates that have the geospatial data format;and generating the second electronic data file based on the rendereddigital geographic structure.

In some implementations, the information about the real-world entityrepresented by the data included in each of the respective data sectionsat least one of: i) defines an outline of the real-world entity, or ii)is descriptive of the real-world entity. In some implementations, thefirst electronic data file defines multiple layers, each layerrepresenting a feature of a digitally rendered geographic structure; andeach of the respective data sections corresponds to a particular layerof the multiple layers defined by the first electronic file.

In some implementations, the real-world entity defines a virtualboundary of the feature of the digitally rendered geographic structure,and the layer corresponds to a floorplan of a physical space renderableas a digital geographic structure and the feature corresponds to a shapeof at least a portion of the floorplan. In some implementations, theinterpreter module is configured to communicate with an enterprisesystem that manages one or more assets and the method further includes:associating, by a mapping module of the computing system, at least oneasset managed by the enterprise system with at least one feature of thedigitally rendered geographic structure based on a location hierarchyfor the geographic structure.

In some implementations, the first electronic data file: i) is a drawingfile generated by a particular application program; ii) includes datafor encoding one or more graphical objects; and ii) that has a firstfile format for enabling interoperability between the drawing filegenerated by the particular application program and one or more otherapplication programs. In some implementations, the particularapplication program is a computer-aided design (CAD) applicationprogram; and the first file format corresponds to a drawing exchangeformat (DXF).

In some implementations, the second electronic data file has a secondfile format that corresponds to a geospatial data interchange format forencoding one or more geographic data structures. In someimplementations, the second electronic data file comprises encoded datafor rendering multiple respective digital geographic structures, andeach respective digital geographic structure corresponds to a particularreal-world entity of multiple real-world entities represented by thedata included in the data section.

Other implementations of this and other aspects include correspondingsystems, apparatus, and computer programs, configured to perform theactions of the methods, encoded on computer storage devices. A computingsystem of one or more computers or hardware circuits can be soconfigured by virtue of software, firmware, hardware, or a combinationof them installed on the system that in operation cause the system toperform the actions. One or more computer programs can be so configuredby virtue of having instructions that, when executed by a dataprocessing apparatus, cause the apparatus to perform the actions.

The subject matter described in this specification can be implemented torealize one or more of the following advantages. DXF files can beinterpreted irrespective of the different ways in which data is arrangedwithin the files. The described standardized framework can beimplemented to efficiently identify sections of DXF files, parse entitydata for the sections, and to extract relevant entity records from thesections. Processes are described for extracting coordinate data of theentity records and converting the extracted data from a raw DXF drawingfile format to a GeoJSON geospatial data file format.

The details of one or more implementations of the subject matterdescribed in this specification are set forth in the accompanyingdrawings and the description below. Other potential features, aspects,and advantages of the subject matter will become apparent from thedescription, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example computing system for executing aninterpreter framework to convert one or more files.

FIG. 2 illustrates an interpreter module of the example computing systemof FIG. 1 .

FIG. 3 illustrates an example floorplan represented by a DXF file.

FIG. 4 is a process flow chart for executing an interpreter framework toconvert one or more files.

FIG. 5 is a block diagram of a computing system that can be used inconnection with methods described in this specification.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

This document describes techniques for interpreting DXF filesirrespective of the different data arrangements within the files. Forexample, the described techniques include a file interpreter frameworkfor converting DXF files to GeoJSON files. Drawing files that have a DXFfile format are often formatted to include multiple data sections. Thedescribed interpreter framework can be represented by a computerapplication that receives the drawing file and uses an interpretermodule of the computer application to identify the different datasections of the drawing file. For example, the drawing file may be usedto view renderings of a building floorplan and each data section of thefile can include information about a layer of the floorplan. A layer ofa floorplan can correspond to electrical lines of the floorplan orplumbing lines of the floorplan.

Each data section can include objects that contain information about thesection. For example, objects can be entity records containing graphicalinformation defining shapes and outlines of objects in the floorplan.The computer application parses and extracts object information of thedrawing file and converts the extracted object information to arenderable format. For example, the application can convert extracteddimensional coordinates of a DXF file to a geoJSON format for renderinggeographic data structures. The application program then generates ageoJSON file that can be used to graphically render the floorplan of theDXF file.

The DXF file format provides a file structure that includes thefollowing types of data sections: i) a HEADER section that includesgeneral information about the drawing; ii) a CLASSES section that holdsthe information for application-defined classes; iii) a TABLES sectionthat contains definitions of named items; iv) a BLOCKS section thatcontains Block Definition entities describing the entities in thedrawing; v) an ENTITIES section that contains the drawing entities,including any Block section references; vi) an OBJECTS section thatcontains data that applies to non-graphical objects; and vii) aTHUMBNAILIMAGE section that contains the preview image for the DXF file.

The GeoJSON file format is a format for encoding a variety of geographicdata structures (e.g., encoded data). In general, the GeoJSON fileformat is a geospatial data interchange format based on JavaScriptObject Notation (JSON) and is designed for representing geographicalfeatures, along with their non-spatial attributes. An object of aGeoJSON file may represent a geometry, a feature, or a collection offeatures. The features can include points (e.g., addresses andlocations), line strings (e.g., streets, highways and boundaries),polygons (e.g., countries, provinces, tracts of land), and multi-partcollections of these types. In some implementations, GeoJSON featurescan represent non-physical real-world entities. For example, mobilerouting and navigation applications might describe signal coverage areasusing the GeoJSON format.

As used in this document, the interpreter framework can represent aspecific set of computer-implemented rules for a standardized method ofconverting a DXF file to a geoJSON file. The interpreter frameworkenables the automation of specific computer-related DXF fileinterpretation and conversion tasks that previously could not beperformed by computer systems in an efficient manner. The frameworkimproves computer-based file conversion processes by enabling differentarrangements of data representations in a DXF file to be automaticallyconverted and rendered for viewing in a geoJSON format. Also, thedescribed techniques provide a repeatable automated process thatinvolves minimal human intervention and does not require manualexecution of data parsing, extraction, or conversion functions. As such,the techniques enable computing systems to perform operations that thesystems were previously unable to automatically perform due to thechallenges of developing standardized methods for interpreting DXFfiles.

FIG. 1 illustrates an example computing system 100 for executing aninterpreter framework to convert one or more files. The system 100generally includes a client system 102, a computing server 104, a cloudcomputing platform 112, a client device 114, and an enterprise assetmanagement (EAM) system 116. EAM is the management of the physical (andvirtual) assets of an organization or business enterprise. Assetmanagement can cover concepts including the design, construction,commissioning, operations, maintenance, decommissioning, or replacementof assets such as electronic devices, mechanical equipment, orfacilities. An example EAM system can execute software programs thatprovide asset managers with computer-based options for holisticallyviewing and managing a variety of different company-owned resources.

In general, the platform 112 can correspond to an example cloud-basedcomputing system. For example, the platform 112 can enable access tocertain application programs and code scripts for performing variousdata processing operations. In addition, the platform 112 can facilitateor enable the sharing of data communications between client and serverdevices of system 100.

The client system 102 can generally include one or more client devices114. Any of the client devices 114 can be a desktop computer, a laptopcomputer, a tablet device, a smart computer device, or one of otherrelated electronic devices that are configured to execute example designapplication programs. The client system 102 executes a computer-aideddesign application 106 for generating one or more electronic data files108. In some implementations, the application 106 is an examplecomputer-aided design (CAD) program (e.g., commercial CAD programs ordrafting software applications) and the electronic data files 108 areDXF files generated by the CAD program. As described in further detailbelow, the DXF files are drawing files that encode data representationsof real-world constructs.

The computing server 104 includes a data interpreter module 110 and isgenerally configured to exchange data, including electronic data files,with the client system 102. The server 104 is configured to access,implement, and/or execute the data interpreter module 110. For example,the server 104 can obtain or receive one or more data files 108 from theclient system 102. As described in more detail below, the server 104 cancause the interpreter module 110 to execute specific computing processesfor an interpreter framework. Using the interpreter module 110, theserver 104 can convert a first data file 108 in order to generate acorresponding new second data file 128. For example, the server 104 usesthe interpreter module 104 to execute specific computing rules tointerpret and convert data files 108 in order to generate the new datafiles 128. The new second data files 128 may have file characteristicsthat are different than file characteristics of the first data files108.

For example, a data file 108 can be a drawing file generated by aparticular type of application 106 (e.g., a CAD program) and can includedata for encoding one or more graphical objects. The data files 108 canhave a file format for enabling interoperability between drawing filesgenerated by the application 106 and one or more other applicationprograms. In particular, the file format can be a drawing exchangeformat (DXF) which indicates file characteristics of the data files 108.Using processes described in this document, a user can leverage theinteroperability afforded by the DXF file format to interpret andconvert a data file 108, e.g., a DXF drawing file, to generate acorresponding data file 128. The data file 128 has a geospatial datainterchange format, e.g., GeoJSON format, for encoding one or moregeographic data structures.

While in typical implementations, the interpreter module 110 is encodedon computer-readable media, in some implementations, the interpretermodule 110 is included within the server 104 as a sub-system of hardwarecircuits that includes one or more processing devices or processormicrochips. In general, the server 104 can include processors, memory,and data storage devices that collectively form modules and computersystems of the server 104. Processors of the computer systems processinstructions for execution by the server 104, including instructionsstored in the memory or on the data storage device to display graphicalinformation for output at an example display monitor of system 100.

Execution of the stored instructions can cause one or more of theactions described herein to be performed by the server 104 or theinterpreter module 110. In other implementations, multiple processorsmay be used, as appropriate, along with multiple memories and types ofmemory. For example, the server 104 may be connected with multiple othercomputing devices, with each device (e.g., a server bank, groups ofservers, modules, or a multi-processor system) performing portions ofthe actions, operations, or logical flows described in thisspecification.

The data interpreter module 110 executes a file interpreter frameworkfor converting DXF files to GeoJSON files. The data interpreter module110 processes programed instructions for executing a file importer 120,a data extractor 122, a data converter 124, and a data translator 126.As described in more detail below with reference to FIG. 2 , the module110 uses the importer 120 to receive or obtain the data file 108 fromthe client system 102. The data file 108 can be a DXF drawing file thatis formatted to include multiple data sections. Using the programmedinstructions, the data interpreter module 110 executes a fileinterpreter framework for converting DXF files to GeoJSON files.

For example, a DXF drawing file can be converted to a GeoJSON file byusing importer 120 to receive and identify certain sections of the DXFfile and then using data extractor 122 to parse and extract data fromthe identified sections of the DXF drawing file. Converter 124interprets the extracted data and uses coded scripts to convert the datato a GeoJSON format. The data translator 126 is used to process andaggregate the converted data in order to create a GeoJSON file whichcorresponds to data file 128. The data file 128 can be a GeoJSON filethat is used by the EAM system 116 to view and modify existingrepresentations of real-world constructs. In some implementations, theclient device 114 is used to interface with the EAM system 116 to manageexisting location hierarchies or to create new hierarchies based oninformation included in the GeoJSON data files 128.

FIG. 2 illustrates the interpreter module 110 of the computing system100 described above with reference to FIG. 1 . In particular, FIG. 2shows an interpreter framework 200 used by the interpreter module 110 toconvert a DXF file 204 to a GeoJSON file 218. Framework 200 includes theinterpreter module 110 receiving a DXF drawing file 204. The interpretermodule 110 imports or receives file 204 using the server 104. In someimplementations, the server 104 uses computing services enabled by thecloud computing platform 112 to access the file 204 from the clientsystem 102 and to access the interpreter module 110.

For example, the interpreter module 110 can reside on a software servicedevice of the cloud computing platform 112 and use the platform 112 toimport the file 204. In some implementations, the cloud computingplatform 112 is a ServiceNow platform. In other implementations,computing logic for the file importing functions of identifier 120 areintegrated with client system 102. For example, file 204 can be storedon a file server of client system 102 and the interpreter module 110 canuse the integrated importer function to retrieve the file 204.Interpreter module 110 can be configured to support a variety of fileretrieval methods, such as a file attachment upload method or methodsinvolving the file transfer protocol (FTP).

The server 104 can include an example management, instrumentation, anddiscovery (MID) server that is a Java-based application executed withinan operating system of the server 104. For example, a MID server canfacilitate communication and movement of data between the cloudcomputing platform 112 and other application programs (e.g., externalapplications), data sources, and services. The server 104 can use theMID server application features to execute code scripts (e.g.,JavaScript) as well as create or import additional script libraries forimplementing features of the interpreter module 110 and the framework200.

In some implementations, an application file that communicates with theMID server is installed on the client system 102 to allow the MID serverand/or the server 104 to access network resources (e.g., DXF drawingfiles) stored at the client system 102. The application file can beconfigured to facilitate streamlined access to the client system 102.For example, the application file can be used by the client system 102to provision data access permissions to the MID server and the server104. The permissions can facilitate direct access to data files andresources of the client system 102 irrespective of access restrictionsimposed by firewalls or other network boundary devices of the clientsystem.

To perform the framework 200, the interpreter module 110 receives theDXF file 204 (e.g., a drawing file) from client system 102. The file 204includes multiple respective data sections that can represent layers orother aspects of a DXF drawing file. Individual layers of a drawing filecorrespond to physical features or other characteristics of real-worldconstructs, such as plumbing or electrical lines of a building. Inaddition to the layers, the file 204 can include various types of datathat can represent real-world entities. Data representing a real-worldentity can be described at least as a data record or a data object ofthe DXF drawing file. An example data object can represent a graphicaldata structure for depicting lines and boundaries that define physicalfeatures of real-world constructs.

The interpreter module 110 identifies each data section 206 of the DXFfile 204. For example, based on features of the server 104 and/or theMID server, the interpreter module 110 uses the identifier 120 toperform data processing and streaming operations for identifying datasections 206 of file 204. In some implementations, data for the variousdata sections of file 204 are streamed to the compute blocks of theinterpreter module 110 and processed in real-time. In otherimplementations, each compute block consumes an entire file 204 bystoring the file in memory and then processing the file 204 to perform aparticular operation for interpreting data contents of the file.

The interpreter module 110 parses and extracts objects and/orinformation 208 about real-world entities from the file layers thatcorrespond to the identified data sections 206. As used herein,real-world entities represent actual physical and non-physicalitems/things of the real-world that can be graphically rendered anddisplayed at a computer system display monitor as a computer-generatedobject. Examples of a real-world entity include a layout of a floor of abuilding, a campus location, buildings at the campus, rooms of thebuilding, a computing device positioned in a room, a detectable wirelesssignal range of the computing device, or plumbing lines of the building.

For clarity, data representing real-world entities relates to electronicdata for producing the computer-generated objects that can begraphically displayed at a display monitor of a computer system. Hence,data representing real-world entities is different than the actualphysical (and non-physical) items that correspond to the real worldentities. In some implementations, real-world entities can indicatesignal coverage ranges, sprinkler system ranges, or physical attributesand dimensions of real-world construct. For example, the information 208about real-world entities extracted from the file layers can: i) definean outline of the real-world entity, e.g., size or shape of the entity,or ii) is descriptive of the real-world entity, e.g., indicates a Wi-Fisignal range or identifies a type of electrical line.

The DXF file 204 can define multiple layers that each includeinformation about features of a digitally renderable real-world entity(e.g., a geographic structure or location). In some implementations,each layer includes data that defines a virtual boundary of the featureof the digitally rendered real-world entity. For example, a layer cancorrespond to a physical building, a floorplan, or campus locationfloorplan, and the feature can correspond to a shape of at least aportion of the particular real-world entities for that layer.

The interpreter module 110 uses the data extractor 122 to parse data fora layer and forms sets of individual entity records based on the parseddata. Using the sets of individual entity records, the data extractor122 extracts dimensional coordinates and/or descriptive information 210for the real-world entity. For example, each entity record cancorrespond to a shape or feature of the real-world entity and caninclude dimensional coordinates that define an outline and othercharacteristics of the real-world entity. Extracted dimensionalcoordinates 210 can define the lines and boundaries of a real-worldentity.

The interpreter module 110 uses the converter 124 to convert theextracted dimensional coordinates 210 to a GeoJSON file format 212. Forexample, the converter 124 processes raw numerical line data, e.g., forthe dimensional coordinates 210, in the native DXF file format togenerate new GeoJSON data structures. The generated GeoJSON data 212includes geometry or physical attribute information about real-worldentities of the DXF file 204. The interpreter module 110 uses the datatranslator 126 to translate and digitally render geographic structures214 using the GeoJSON data 212 that are based the converted dimensionalcoordinates 210. As used in this document, translating and renderingrelates to using extracted DXF file coordinates 210 that have beenconverted to the GeoJSON file format 212 to reconstruct (e.g., render) aparticular shape or outline of a real-world entity. The data translator126 renders a digital geographic structure 214 by aggregating converteddimensional coordinates 210 that have the geospatial data format 212. Adigital geographic structure depicts a real-world entity (or multiplereal-world entities) and is computer-generated for graphical renderingand display using a computer system. The aggregated dimensionalcoordinates 210 represent rendered geographic data structures 214 andare used to generate GeoJSON file 218.

The interpreter module 110 can communicate with the EAM system 116 thatmanages assets for at least one location hierarchy 220. The EAM system116 uses the GeoJSON file 218 to obtain entity meta data about thereal-world entities represented by data in the DXF file 204. Forexample, the entity meta data can include descriptions of physicalassets associated with a real-world entity or space profile informationindicating a size or dimension of a real-world entity, such as a size ofroom in a building.

The EAM system 116 can modify existing representations, or create newrepresentations, of real-world entities and buildings using the entitymetadata included in the GeoJSON file 218. In some implementations, theEAM system 116 uses a mapping module 222 of the system 100 to associateassets managed by the enterprise system with features of a real-worldentity represented in the DXF file 204. For example, the module 222 canassociate the assets of a location hierarchy 220 with real-worldentities based on a relationship between the assets and the real worldentities.

For example, the mapping module 222 can be a data processor (e.g., asoftware module that processes data) that uses programed instructions toscan an existing asset database for information about assets (e.g.,real-entities) of a location hierarchy 220. The module 222 can alsoanalyze information about real-world entities identified in the file218. Based on the scanning and analysis, the module 222 can determinerelationships between the assets of the database and the real-worldentities included in the file 218. For example, a relationship betweenthe asset and the real-world entity can be defined based on the assetand the entity associated with the same virtual floorplan or layer ofthe location hierarchy 220. In some implementations, the locationhierarchy 220 includes existing feature locations and floor plan detailsof the multiple real-world entities that are identified and included infile geoJSON file 218.

FIG. 3 illustrates a diagram 300 of real-world entities that can berepresented by the DXF file 204. The diagram 300 can include datarepresentations of real-world entities for at least a floorplan layer ofthe DXF file 204. For example, the data representations can be twodimensional renderings of floorplans for a building, where thefloorplans include different outlines 302 for each room of a floor inthe building. Data representations of other real-world entitiesassociated with a layer of the file 204 include an example Wi-FI orcellular signal coverage range 306 and/or a plumbing fixture 304 (e.g.,a pump).

FIG. 4 is a flow chart of a process 400 for executing an interpreterframework to convert one or more files. The process 400 can be performedor executed using systems 100 and 200 described above. In someimplementations, described actions of process 400 are enabled byprogrammed software instructions that are executable by at least oneprocessing device and memory of computing systems described in thisdocument.

The process 400 includes the interpreter module 110 of the system 100receiving a first electronic data file (402). For example, theinterpreter module 110 can import or receive a DXF drawing file thatincludes multiple respective data sections. The respective data sectionscan represent layers of a DXF drawing file. In some implementations,individual layers of a drawing file correspond to physical features orother characteristics of real-world constructs. For example, one layercan correspond to plumbing lines and related plumbing features of areal-world building construct or electrical lines and wiring featuresincluded in the building construct.

The interpreter module 110 uses the identifier 120 to identify each ofthe respective data sections of the first electronic data file 108,e.g., the DXF drawing file (404). Each data section or layer of thedrawing file includes data representing a real-world entity of thedrawing file. In some implementations, real-world entities can includeWi-Fi zones of a building or location, sprinkler range for a sprinklersystem of a building, or various other entities and attributes of one ormore real-world construct. In some implementations, data representing areal-world entity can be described as one or more data objects of theDXF drawing file, such as graphical structures for depicting lines andboundaries. The lines and boundaries may define a floorplan of thereal-world building construct or physical items associated with thefloorplan.

For each of the respective data sections or layers of the DXF drawingfile, the interpreter module 110 uses the data extractor 122 to parseinformation about the real-world entities represented by the data forthe layer (406). In some implementations, parsing the information aboutthe real-world entity includes data extractor 122 extracting dimensionalcoordinates for the real-world entity. The dimensional coordinatesdefine characteristics of the real-world entity. For example, extracteddimensional coordinates can define the lines and boundaries for afloorplan of the real-world building construct and/or define the linesand boundaries for physical items associated with the floorplan.

The interpreter module 110 uses the converter 124 to convert theextracted dimensional coordinates (408) to a geospatial data format,e.g., a GeoJSON file format. In some implementations, converting theextracted dimensional coordinates to the GeoJSON file format includesthe module 110 generating at least one dataset that includes geometry orphysical attribute information about one or more real-world entitiesrepresented by data in the drawing file. In response to extracting andconverting the dimensional coordinates to the GeoJSON file format, themodule 110 can use the data translator 126 to translate and digitallyrender at least one geographic structure using the dimensionalcoordinates (408).

For example, the interpreter module 110 can translate and digitallyrender the digital geographic structure by aggregating converteddimensional coordinates that have the geospatial data format. Theaggregated dimensional coordinates can represent rendered data forgenerating a geospatial data file, e.g., a GeoJSON file. The interpretermodule 110 then generates a second electronic data file 128 based on therendered data associated with each of the respective data sections ofthe DXF drawing file (410). The second electronic file 128 is a GeoJSONdata file that encodes data for rendering digital geographic structuresusing information about the real-world entity represented by the datafor the respective layers of the drawing file. In some implementations,the digital geographic structures represent physical or other featuresof the real-world building constructs.

FIG. 5 is a block diagram of computing devices 500, 550 that may be usedto implement the systems and methods described in this document, aseither a client or as a server or plurality of servers. Computing device500 is intended to represent various forms of digital computers, such aslaptops, desktops, workstations, personal digital assistants, servers,blade servers, mainframes, and other appropriate computers. Computingdevice 550 is intended to represent various forms of mobile devices,such as personal digital assistants, cellular telephones, smartphones,smartwatches, head-worn devices, and other similar computing devices.The components shown here, their connections and relationships, andtheir functions, are meant to be exemplary only, and are not meant tolimit implementations described and/or claimed in this document.

Computing device 500 includes a processor 502, memory 504, a storagedevice 506, a high-speed interface 508 connecting to memory 504 andhigh-speed expansion ports 510, and a low speed interface 512 connectingto low speed bus 514 and storage device 506. Each of the components 502,504, 506, 508, 510, and 512, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 502 can process instructions for executionwithin the computing device 500, including instructions stored in thememory 504 or on the storage device 506 to display graphical informationfor a GUI on an external input/output device, such as display 516coupled to high speed interface 508. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices500 may be connected, with each device providing portions of thenecessary operations, e.g., as a server bank, a group of blade servers,or a multi-processor system.

The memory 504 stores information within the computing device 500. Inone implementation, the memory 504 is a computer-readable medium. In oneimplementation, the memory 504 is a volatile memory unit or units. Inanother implementation, the memory 504 is a non-volatile memory unit orunits.

The storage device 506 is capable of providing mass storage for thecomputing device 500. In one implementation, the storage device 506 is acomputer-readable medium. In various different implementations, thestorage device 506 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device, a flash memory or other similarsolid state memory device, or an array of devices, including devices ina storage area network or other configurations. In one implementation, acomputer program product is tangibly embodied in an information carrier.The computer program product contains instructions that, when executed,perform one or more methods, such as those described above. Theinformation carrier is a computer- or machine-readable medium, such asthe memory 504, the storage device 506, or memory on processor 502.

The high speed controller 508 manages bandwidth-intensive operations forthe computing device 500, while the low speed controller 512 manageslower bandwidth-intensive operations. Such allocation of duties isexemplary only. In one implementation, the high-speed controller 508 iscoupled to memory 504, display 516, e.g., through a graphics processoror accelerator, and to high-speed expansion ports 510, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 512 is coupled to storage device 506 and low-speed expansionport 514. The low-speed expansion port, which may include variouscommunication ports, e.g., USB, Bluetooth, Ethernet, wireless Ethernet,may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 500 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 520, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 524. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 522. Alternatively, components from computing device 500 may becombined with other components in a mobile device (not shown), such asdevice 550. Each of such devices may contain one or more of computingdevice 500, 550, and an entire system may be made up of multiplecomputing devices 500, 550 communicating with each other.

Computing device 550 includes a processor 552, memory 564, aninput/output device such as a display 554, a communication interface566, and a transceiver 568, among other components. The device 550 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 550, 552,564, 554, 566, and 568, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 552 can process instructions for execution within thecomputing device 550, including instructions stored in the memory 564.The processor may also include separate analog and digital processors.The processor may provide, for example, for coordination of the othercomponents of the device 550, such as control of user interfaces,applications run by device 550, and wireless communication by device550.

Processor 552 may communicate with a user through control interface 558and display interface 556 coupled to a display 554. The display 554 maybe, for example, a TFT LCD display or an OLED display, or otherappropriate display technology. The display interface 556 may includeappropriate circuitry for driving the display 554 to present graphicaland other information to a user. The control interface 558 may receivecommands from a user and convert them for submission to the processor552. In addition, an external interface 562 may be provided incommunication with processor 552, so as to enable near areacommunication of device 550 with other devices. External interface 562may provide, for example, for wired communication, e.g., via a dockingprocedure, or for wireless communication, e.g., via Bluetooth or othersuch technologies.

The memory 564 stores information within the computing device 550. Inone implementation, the memory 564 is a computer-readable medium. In oneimplementation, the memory 564 is a volatile memory unit or units. Inanother implementation, the memory 564 is a non-volatile memory unit orunits. Expansion memory 574 may also be provided and connected to device550 through expansion interface 572, which may include, for example, aSIMM card interface. Such expansion memory 574 may provide extra storagespace for device 550, or may also store applications or otherinformation for device 550. Specifically, expansion memory 574 mayinclude instructions to carry out or supplement the processes describedabove, and may include secure information also. Thus, for example,expansion memory 574 may be provided as a security module for device550, and may be programmed with instructions that permit secure use ofdevice 550. In addition, secure applications may be provided via theSIMM cards, along with additional information, such as placingidentifying information on the SIMM card in a non-hackable manner.

The memory may include for example, flash memory and/or MRAM memory, asdiscussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 564, expansionmemory 574, or memory on processor 552.

Device 550 may communicate wirelessly through communication interface566, which may include digital signal processing circuitry wherenecessary. Communication interface 566 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 568. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS receiver module 570 may provide additional wireless datato device 550, which may be used as appropriate by applications runningon device 550.

Device 550 may also communicate audibly using audio codec 560, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 560 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 550. Suchsound may include sound from voice telephone calls, may include recordedsound, e.g., voice messages, music files, etc., and may also includesound generated by applications operating on device 550.

The computing device 550 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 580. It may also be implemented as part of asmartphone 582, personal digital assistant, or other similar mobiledevice.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs, computer hardware, firmware, software, and/orcombinations thereof. These various implementations can includeimplementation in one or more computer programs that are executableand/or interpretable on a programmable system including at least oneprogrammable processor, which may be special or general purpose, coupledto receive data and instructions from, and to transmit data andinstructions to, a storage system, at least one input device, and atleast one output device.

These computer programs, also known as programs, software, softwareapplications or code, include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device, e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device,e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor,for displaying information to the user and a keyboard and a pointingdevice, e.g., a mouse or a trackball, by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback, e.g., visual feedback,auditory feedback, or tactile feedback; and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back-end component, e.g., as a dataserver, or that includes a middleware component such as an applicationserver, or that includes a front-end component such as a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here, or any combination of such back-end, middleware, orfront-end components. The components of the system can be interconnectedby any form or medium of digital data communication such as, acommunication network. Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

As used in this specification, the term “module” is intended to include,but is not limited to, one or more computers configured to execute oneor more software programs that include program code that causes aprocessing unit(s)/device(s) of the computer to execute one or morefunctions. The term “computer” is intended to include any dataprocessing or computing devices/systems, such as a desktop computer, alaptop computer, a mainframe computer, a personal digital assistant, aserver, a handheld device, a smartphone, a tablet computer, anelectronic reader, or any other electronic device able to process data.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the invention. Accordingly, other embodimentsare within the scope of the following claims. While this specificationcontains many specific implementation details, these should not beconstrued as limitations on the scope of what may be claimed, but ratheras descriptions of features that may be specific to particularembodiments. Certain features that are described in this specificationin the context of separate embodiments can also be implemented incombination in a single embodiment.

Conversely, various features that are described in the context of asingle embodiment can also be implemented in multiple embodimentsseparately or in any suitable subcombination. Moreover, althoughfeatures may be described above as acting in certain combinations andeven initially claimed as such, one or more features from a claimedcombination can in some cases be excised from the combination, and theclaimed combination may be directed to a subcombination or variation ofa subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various system modulesand components in the embodiments described above should not beunderstood as requiring such separation in all embodiments, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Particular embodiments of the subject matter have been described. Otherembodiments are within the scope of the following claims. For example,the actions recited in the claims can be performed in a different orderand still achieve desirable results. As one example, some processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults.

The invention claimed is:
 1. A method implemented using a systemcomprising an interpreter module configured to execute an interpreterframework for generating geospatial data files, the method comprising:obtaining a drawing file comprising a plurality of layers, each of theplurality of layers comprising data values used to digitally renderphysical items; interpreting data values of a first layer of the drawingfile, comprising: extracting each data value that represents adimensional coordinate of an entity record that corresponds to aphysical item of the first layer; for each data value that representsthe dimensional coordinate, converting the data value to a geospatialfile format to obtain a set of geospatial values; and automaticallyinterpreting the data values irrespective of a manner in which datastructures, that use the data values to define representations ofphysical items of the first layer, are arranged within the drawing file,wherein the drawing file is a drawing exchange format (DXF) file; andgenerating, based on the set of geospatial values, a geospatial datafile having the geospatial file format, wherein the geospatial data fileis configured to digitally render the physical item using the set ofgeospatial values, wherein the geospatial data file comprises ageospatial JavaScript Object Notation (geoJSON) drawing file configuredto graphically render a floorplan of the DXF file, and wherein thephysical item is included in the floorplan of the DXF file.
 2. Themethod of claim 1, further comprising; interpreting the data values ofeach of the plurality of layers in the drawing file, comprising: foreach layer: extracting each data value that represents a dimensionalcoordinate of an entity record that corresponds to each physical item ofthe layer; and converting each of the extracted data values to thegeospatial file format to obtain a respective set of geospatial valuesfor the layer.
 3. The method of claim 2, wherein generating thegeospatial data file having the geospatial file format comprises:generating the geospatial data file based on the respective set ofgeospatial values for each of the plurality of layers of the drawingfile.
 4. The method of claim 1, wherein the interpreter frameworkexecuted by the interpreter module is a computer-based file conversionprocess that enables different arrangements of data representations inthe first drawing file to be automatically converted and rendered forviewing in a geoJSON format.
 5. The method of claim 1, whereingenerating the geospatial data file comprises: converting dimensionalcoordinates of the first layer to the geospatial file format;aggregating each of the converted dimensional coordinates that have thegeospatial file format; and generating the set of geospatial valuesbased on the converted dimensional coordinates that have the geospatialfile format.
 6. The method of claim 5, wherein the geospatial fileformat is a geospatial data interchange format that is based onJavaScript Object Notation (JSON) and the geospatial file format is forrepresenting geographical features of the drawing file, along with arespective non-spatial attribute of each geographical feature.
 7. Themethod of claim 1, further comprising: automatically processing, usingthe interpreter module, contents of the drawing file after storing thedrawing file in a memory, wherein the interpreter module processes thefirst drawing file independent of the application interface used togenerate the first drawing file.
 8. A system that comprises aninterpreter module configured to execute an interpreter framework forgenerating geospatial data files, the system comprising a processingdevice and a non-transitory machine-readable storage device storinginstructions that are executable by the processing device to causeperformance of operations comprising: obtaining a drawing filecomprising a plurality of layers, each of the plurality of layerscomprising data values used to digitally render physical items;interpreting data values of a first layer of the drawing file,comprising: extracting each data value that represents a dimensionalcoordinate of an entity record that corresponds to a physical item ofthe first layer; for each data value that represents the dimensionalcoordinate, converting the data value to a geospatial file format toobtain a set of geospatial values; and automatically interpreting thedata values irrespective of a manner in which data structures, that usethe data values to define representations of physical items of the firstlayer, are arranged within the drawing file, wherein the drawing file isa drawing exchange format (DXF) file; and generating, based on the setof geospatial values, a geospatial data file having the geospatial fileformat, wherein the geospatial data file is configured to digitallyrender the physical item using the set of geospatial values, whereingenerating the geospatial data file comprises a geospatial JavaScriptObject Notation (geoJSON) drawing file configured to graphically rendera floorplan of the DXF file, and wherein the physical item is includedin the floorplan of the DXF file.
 9. The system of claim 8, wherein theoperations further comprise: interpreting the data values of each of theplurality of layers in the drawing file, comprising: for each layer:extracting each data value that represents a dimensional coordinate ofan entity record that corresponds to each physical item of the layer;and converting each of the extracted data values to the geospatial fileformat to obtain a respective set of geospatial values for the layer.10. The system of claim 9, wherein generating the geospatial data filehaving the geospatial file format comprises: generating the geospatialdata file based on the respective set of geospatial values for each ofthe plurality of layers of the drawing file.
 11. The system of claim 8,wherein the interpreter framework executed by the interpreter module isa computer-based file conversion process that enables differentarrangements of data representations in the first drawing file to beautomatically converted and rendered for viewing in a geoJSON format.12. The system of claim 8, wherein generating the geospatial data filecomprises: converting dimensional coordinates of the first layer to thegeospatial file format; aggregating each of the converted dimensionalcoordinates that have the geospatial file format; and generating the setof geospatial values based on the converted dimensional coordinates thathave the geospatial file format.
 13. The system of claim 12, wherein thegeospatial file format is a geospatial data interchange format that isbased on JavaScript Object Notation (JSON) and the geospatial fileformat is for representing geographical features of the drawing file,along with a respective non-spatial attribute of each geographicalfeature.
 14. A non-transitory machine-readable storage device storinginstructions for generating geospatial data files using an interpretermodule, the instructions being executable by a processing device tocause operations comprising: obtaining a drawing file comprising aplurality of layers, each of the plurality of layers comprising datavalues used to digitally render physical items; interpreting data valuesof a first layer of the drawing file, comprising: extracting each datavalue that represents a dimensional coordinate of an entity record thatcorresponds to a physical item of the first layer; for each data valuethat represents the dimensional coordinate, converting the data value toa geospatial file format to obtain a set of geospatial values; andautomatically interpreting the data values irrespective of a manner inwhich data structures, that use the data values to definerepresentations of physical items of the first layer, are arrangedwithin the drawing file, wherein the drawing file is a drawing exchangeformat (DXF) file; and generating, based on the set of geospatialvalues, a geospatial data file having the geospatial file format,wherein the geospatial data file is configured to digitally render thephysical item using the set of geospatial values, wherein generating thegeospatial data file comprises a geospatial JavaScript Object Notation(geoJSON) drawing file configured to graphically render a floorplan ofthe DXF file, and wherein the physical item is included in the floorplanof the DXF file.
 15. The non-transitory machine-readable storage deviceof claim 14, wherein the operations further comprise: interpreting datavalues of each of the plurality of layers in the drawing file,comprising: for each layer: extracting each data value that represents adimensional coordinate of an entity record that corresponds to eachphysical item of the layer; and converting each of the extracted datavalues to the geospatial file format to obtain a respective set ofgeospatial values for the layer.
 16. The non-transitory machine-readablestorage device of claim 15, wherein generating the geospatial data filehaving the geospatial file format comprises: generating the geospatialdata file based on the respective set of geospatial values for each ofthe plurality of layers of the drawing file.
 17. The non-transitorymachine-readable storage device of claim 14, wherein the interpreterframework executed by the interpreter module is a computer-based fileconversion process that enables different arrangements of datarepresentations in the first drawing file to be automatically convertedand rendered for viewing in a geoJSON format.
 18. The non-transitorymachine-readable storage device of claim 14, wherein generating thegeospatial data file comprises: converting dimensional coordinates ofthe first layer to the geospatial file format; aggregating each of theconverted dimensional coordinates that have the geospatial file format;and generating the set of geospatial values based on the converteddimensional coordinates that have the geospatial file format.
 19. Thenon-transitory machine-readable storage device of claim 18, wherein thegeospatial file format is a geospatial data interchange format that isbased on JavaScript Object Notation (JSON) and the geospatial fileformat is for representing geographical features of the drawing file,along with a respective non-spatial attribute of each geographicalfeature.